package persistence.model;

import persistence.dao.UEDAO;
import persistence.db.DataSet;

public class UE extends AbstractModel {
	
	private String nomUE;
	private String descriptionUE;
	private int nbECTS;
	private int noteMinUE;
	private int idSemestre;
	private DataSet matiereSet;
	
	/**
	 * Constructeur d'une UE
	 */
	public UE(){
		setDao(new UEDAO(this));
	}
	
	/**
	 * Constructeur d'une UE
	 * @param id identifiant de l'UE
	 */
	public UE(int id) {
		this();
		setId(id);
	}
	
	/**
	 * Constructeur d'une UE
	 * @param id idenifiant de l'UE
	 * @param nom nom de l'UE
	 * @param desc description de l'UE
	 * @param nbE nombre d'ECTS de l'UE
	 * @param noteMin note minimal de l'UE
	 * @param idSem identifiant du semestre
	 * @param matiereSet 
	 */
	public UE(int id, String nom, String desc, int nbE, int noteMin, int idSem, DataSet matiereSet) {
		this(id);
		this.nomUE = nom;
		this.descriptionUE = desc;
		this.nbECTS = nbE;
		this.noteMinUE = noteMin;
		this.idSemestre = idSem;
		this.matiereSet = matiereSet;
	}

	public String getNomUE() {
		return nomUE;
	}

	public void setNomUE(String nomUE) {
		this.nomUE = nomUE;
	}

	public String getDescriptionUE() {
		return descriptionUE;
	}

	public void setDescriptionUE(String descriptionUE) {
		this.descriptionUE = descriptionUE;
	}

	public int getNbECTS() {
		return nbECTS;
	}

	public void setNbECTS(int nbECTS) {
		this.nbECTS = nbECTS;
	}

	public int getNoteMinUE() {
		return noteMinUE;
	}

	public void setNoteMinUE(int noteMinUE) {
		this.noteMinUE = noteMinUE;
	}

	public int getIdSemestre() {
		return idSemestre;
	}

	public void setIdSemestre(int idSemestre) {
		this.idSemestre = idSemestre;
	}
	
	public void setMatiereSet(DataSet matiereSet) {
		this.matiereSet = matiereSet;
	}
	
	public Semestre getSemestre() {
		return (Semestre) Semestre.all().get(idSemestre);
	}

	public static DataSet all() {
		UEDAO ueDAO = new UEDAO();
		return ueDAO.all();
	}

	public DataSet getMatiereSet() {
		return matiereSet;
	}
}
